/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.view;

import br.jm.financeiro.base.eao.EaoException;
import br.jm.financeiro.datamodel.LazyCentroCusto;
import br.jm.financeiro.entity.CentroCusto;
import br.jm.financeiro.filter.Funcoes;
import br.jm.financeiro.sistema.eao.CentroCustoEao;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author joao
 */
public class CentroCustoBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private CentroCusto selectedCentroCusto;
    private LazyDataModel<CentroCusto> lazyModel;
    private final CentroCustoEao centroCustoJpa;
    private String cSql;
    private boolean salvar;
    private Funcoes funcoes;

    public CentroCustoBean() throws EaoException {
        //CENTRO DE CUSTOS
        centroCustoJpa = CentroCustoEao.getInstance();
        selectedCentroCusto = new CentroCusto();

        lazyModel = new LazyCentroCusto(centroCustoJpa);
    }

    public LazyDataModel<CentroCusto> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<CentroCusto> lazyModel) {
        this.lazyModel = lazyModel;
    }

    public CentroCusto getSelectedCentroCusto() {
        return selectedCentroCusto;
    }

    public void setSelectedCentroCusto(CentroCusto selectedCentroCusto) {
        this.selectedCentroCusto = selectedCentroCusto;
    }

    public void inserir(ActionEvent actionEvent) {
        FacesMessage msg = null;

        try {
            if (selectedCentroCusto.getDscCusto() == null) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir: Descrição em Branco! " + selectedCentroCusto.getDscCusto(), "");
            } else if (selectedCentroCusto.getDscCusto().isEmpty()) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir: Descrição em Branco! " + selectedCentroCusto.getDscCusto(), "");
            } else {
                selectedCentroCusto.setIdCusto(null);

                centroCustoJpa.create(selectedCentroCusto);

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Centro de Custo Inserido com Sucesso: ".concat(selectedCentroCusto.getDscCusto())), selectedCentroCusto.getDscCusto());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir: " + selectedCentroCusto.getDscCusto(),
                    e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void alterar(ActionEvent actionEvent) {
        FacesMessage msg = null;

        try {
            if (selectedCentroCusto.getDscCusto() == null) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: Descrição em Branco! " + selectedCentroCusto.getDscCusto(), "");
            } else if (selectedCentroCusto.getDscCusto().isEmpty()) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: Descrição em Branco! " + selectedCentroCusto.getDscCusto(), "");
            } else {
                centroCustoJpa.edit(selectedCentroCusto);
                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Centro de Custo Alterado com Sucesso: ".concat(selectedCentroCusto.getDscCusto())), selectedCentroCusto.getDscCusto());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: " + selectedCentroCusto.getDscCusto(),
                    e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluir(ActionEvent actionEvent) {
        FacesMessage msg = null;
        try {
            if (selectedCentroCusto.getIdCusto() == 0) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Centro de Custo não pode ser Excluido <p /> <center>Controle Interno do Sistema!</center>",
                        selectedCentroCusto.getDscCusto());
            } else {
                centroCustoJpa.destroy(selectedCentroCusto);

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Centro de Custo Excluido com Sucesso: ".concat(selectedCentroCusto.getDscCusto())), selectedCentroCusto.getDscCusto());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Excluir: " + selectedCentroCusto.getDscCusto(),
                    e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public boolean isSalvar() {
        return salvar;
    }

    public void setSalvar(boolean salvar) {
        this.salvar = salvar;
    }

    public void preparaInserir(ActionEvent event) {
        this.selectedCentroCusto = new CentroCusto();
        this.salvar = true;
    }
}
